iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
IT管理

GCP 的 terraform 之旅系列 第 30

day30 Terraform GCP Best Practice

  • 分享至 

  • xImage
  •  

簡介

今天是最後一天, 來跟大家聊聊我看完 GCP Terraform 的最佳實踐後的心得(不含所有內容)

正文

可以從 google 取得原文

Best practices for using Terraform  |  Google Cloud

心得

  1. 每個模組盡可能符合結構

    模組結構
    可重複使用的模組使用與根模組中使用的所有配置語言概念相同。最常見的情況下,模組使用:

    • 輸入變數(Input variables)接受來自調用模組的值。
    • 輸出值(Output values)將結果返回給調用模組,然後它可以使用這些值來填充其他引數。
    • 資源(Resources)組合一個或多個邏輯相關的資源或模組
  2. 模組使用時機

    1. 盡可能扁平
    2. 盡可能多包一些 resource
    3. 要能很漂亮的描述 infra 架構
  3. 盡可能使用以下兩種語法

    1. data(減少輸入): https://developer.hashicorp.com/terraform/language/data-sources
    2. 插值(美化代碼): 插值
    3. random_id(減少錯誤): 盡可能對資源隨機命名
  4. 大型專案參考結構

    參考指令

    # create workspace
    terraform workspace new dev
    terraform workspace new qa
    terraform workspace new prod
    # select workspace
    terraform workspace select dev
    # apply
    terraform apply -var-file=<env>.tfvars
    # destroy
    terraform destroy -var-file=<env>.tfvars
    

    可以用 ${terraform.workspace} access 當前環境

    -- SERVICE-DIRECTORY/
       -- OWNERS
       -- modules/
          -- <service-name>/
             -- main.tf
             -- variables.tf
             -- outputs.tf
             -- provider.tf
             -- README
          -- ...other…
       -- environments/
          -- dev/
             -- backend.tf
             -- main.tf
    
          -- qa/
             -- backend.tf
             -- main.tf
    
          -- prod/
             -- backend.tf
             -- main.tf
    
  5. 測試

    • Static analysis: 多用 [terraform validate](https://www.terraform.io/cli/commands/validate) 確保語法正確
    • Module integration testing: 整合測試框架建議, 這步我覺得非常重要, 也是我之後要學的方向, 因為實務上 infra 一大, 沒有成體系的自動化測試真的壓力很大

完賽心得

謝謝看到這裡的大家 !


上一篇
day29 Terraform GCP GKE-k8s
下一篇
番外篇 GCP Terraform 建立非同步事件驅動架構
系列文
GCP 的 terraform 之旅31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言